﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;

namespace QLTTTH
{
    public partial class UCPhongHoc : DevExpress.XtraEditors.XtraUserControl
    {
        protected static Logger logger = LogManager.GetCurrentClassLogger();
        public UCPhongHoc()
        {
            InitializeComponent();
        }

        private void UCPhongHoc_Load(object sender, EventArgs e)
        {
            LoadDsPhongHoc();
        }
        private void LoadDsPhongHoc()
        {
            var aResult = PhongHocManager.LayDanhSachPhongHoc();
            if (aResult.Success)
                dgvDanhSach.DataSource = aResult.Result;
            else
                Log(aResult);
        }

        private void btnChiTiet_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem chi tiết phòng học.");
            var frm = new frmThongTinPhongHoc();
            frm.FillControl(GetPhongHocListView());
            frm.ShowDialog();
        }
        private void Log(ActionResult aResult)
        {
            foreach(var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }
        private PhongHoc GetPhongHocListView()
        {
            var ph = new PhongHoc();
            ph.MaPhong = int.Parse(grvPhongHoc.GetFocusedRowCellValue("MaPhong").ToString());
            ph.TenPhong = grvPhongHoc.GetFocusedRowCellValue("TenPhong").ToString();
            ph.ChucNang = grvPhongHoc.GetFocusedRowCellValue("ChucNang").ToString();
            ph.TrangThai = grvPhongHoc.GetFocusedRowCellValue("TrangThai").ToString();
            return ph;
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng thêm phòng học.");
            var frm = new frmThongTinPhongHoc();
            frm.sendData = new frmThongTinPhongHoc.SendData(ThemPhongHoc);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void ThemPhongHoc(PhongHoc ph)
        {
            var aResult = PhongHocManager.ThemPhongHoc(ph);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm phòng học mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                LoadDsPhongHoc();
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm phòng học mới không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xóa phòng học.");
            if (XtraMessageBox.Show("Bạn có muốn xóa phòng học này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maPH;

                for (int i = 0; i < grvPhongHoc.RowCount; i++)
                {
                    if (grvPhongHoc.IsRowSelected(i))
                    {
                        maPH = int.Parse(grvPhongHoc.GetRowCellDisplayText(i, "MaPhong").ToString());
                        var aResult = PhongHocManager.XoaPhongHoc(maPH);
                        if (!aResult.Success)
                        {
                            Log(aResult);
                            XtraMessageBox.Show("Xóa phòng học không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                }
                XtraMessageBox.Show("Xóa phòng học thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvPhongHoc.DeleteSelectedRows();
            }
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật phòng học.");
            var frm = new frmThongTinPhongHoc();
            frm.FillControl(GetPhongHocListView());
            frm.sendData = new frmThongTinPhongHoc.SendData(CapNhatPhongHoc);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void CapNhatPhongHoc(PhongHoc ph)
        {
            var aResult = PhongHocManager.CapNhatPhongHoc(ph);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Cập nhật thông tin phòng học thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvPhongHoc.SetFocusedRowCellValue("TenPhong", ph.TenPhong);
                grvPhongHoc.SetFocusedRowCellValue("ChucNang", ph.ChucNang);
                grvPhongHoc.SetFocusedRowCellValue("TrangThai", ph.TrangThai);
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Cập nhật thông tin phòng học không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng tìm kiếm phòng học.");
            grvPhongHoc.ShowFindPanel();
        }
    }
}
